package com.xiangxiangjd.aircraftanalysis.utils;

import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.io.InputStream;
import java.util.UUID;

/**
 * 上传文件  文件服务器工具类
 *    作者:肖守凯
 */
public class FtpUtil {

    //文件服务器地址
    public static final String FTP_ADDRESS="82.156.66.23";
    //端口号
    private static final int FTP_PORT=21;
    //用户名
    private static final String FTP__USERNAME="demo";
    //密码
    private static final String  FTP_PASSWORD="BeFNRh5jzKzs82M5";
    //附带路径
    private static final String FTP_BASEPATH="/data/web/demo/";

    public static String uploadFile(MultipartFile file) throws IOException {


        //获取上传文件流
        InputStream inputStream = file.getInputStream();

        //获取上传文件名字
        String filename = file.getOriginalFilename();

        //截取后缀
        String suffix = filename.substring(filename.lastIndexOf("."));

        //使用UUID 拼接后缀，定义一个不重复的文件名
      String  finaName = UUID.randomUUID() + suffix;



        FTPClient ftp=new FTPClient();
        try{
            int reply;
            ftp.connect(FTP_ADDRESS,FTP_PORT);//链接FTP服务器
            ftp.login(FTP__USERNAME,FTP_PASSWORD);//登录
            reply=ftp.getReplyCode();//
            //判断是否链接的上  没链接上返回true
            if(!FTPReply.isPositiveCompletion(reply)){
                //断开链接
                ftp.disconnect();
                //返回falese
                return null;
            }
            ftp.setFileType(FTPClient.BINARY_FILE_TYPE);// 文件类型 二进制的文件

            boolean b = ftp.makeDirectory(FTP_BASEPATH);//创建文件夹


            ftp.changeWorkingDirectory(FTP_BASEPATH);//改变目录
            ftp.enterLocalPassiveMode();
            ftp.storeFile(finaName,inputStream);
            inputStream.close();
            ftp.logout(); //登录注销



        }catch (IOException e){
            e.printStackTrace();
            return null;
        }finally {
            if(ftp.isConnected()){
                try {
                    //断开链接
                    ftp.disconnect();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

        }


    return finaName;
    }




}
